//package com.lwbldy.common.tools.http.demo.diexin_v1;
//
//
//import com.alibaba.fastjson.JSONObject;
//import com.lwbldy.common.tools.http.client.Request;
//import com.lwbldy.common.tools.http.client.Response;
//import org.apache.commons.codec.binary.Base64;
//import sun.security.provider.MD5;
//
//import java.io.UnsupportedEncodingException;
//import java.net.URLEncoder;
//
///**
// * demo演示请求diexin_v1版本的http消息
// * 接口：发送 查询余额 查询报告 查询上行
// */
//public class AppDemo {
//	Request request = null;
//	public static final String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC18dt2/XOHX7SoPf/SSBFU1DccRq5dAwOGFvamQkosogbwyU/cxrHGtVJw/q7mXUFY4TGMiYd/eB5AzHvUHZlZz1rymBzj98HPF3lJvCYl+PZrvYqzIw+2IJsK219VM6QVouWgTeUTe/j0cJhwpTE1ECfjJr6cQEYh563iJ1ONowIDAQAB";
//
//	public static void main(String[] args) throws Exception {
//		new AppDemo().run();
//	}
//
//	private void run() throws Exception {
//		// TODO Auto-generated method stub
//		/**
//		 * 初始化一次；必须预设服务端uri
//		 */
//		String url = Constants.SMS_SEND_URL;
//
//		request = Request.newHttpRequestBuilder().uri(url).timeout(5000).charset("utf-8").method(Request.POST)
//				.contentType(Request.ContentType.JSON).build();
//		send();
////		securitySend();
//		//		queryBalance();
//		//		queryReport();
////		queryMo();
//
//		request.release();
//	}
//
//	/**
//	 * 协议实体
//	 * @author pei
//	 *
//	 */
//	public static class SendSmsEntity {
//		String appKey = "";
//		String timestamp = "";
//		String mobile = "";
//		String content = "";
//		String sendTime = "";
//		String spNumber = "";
//		String sign = "";
//		String reportUrl = "";
//		String moUrl = "";
//		String attach = "";
//
//		public String getAppKey() {
//			return appKey;
//		}
//
//		public void setAppKey(String appKey) {
//			this.appKey = appKey;
//		}
//
//		public String getTimestamp() {
//			return timestamp;
//		}
//
//		public void setTimestamp(String timestamp) {
//			this.timestamp = timestamp;
//		}
//
//		public String getMobile() {
//			return mobile;
//		}
//
//		public void setMobile(String mobile) {
//			this.mobile = mobile;
//		}
//
//		public String getContent() {
//			return content;
//		}
//
//		public void setContent(String content) {
//			this.content = content;
//		}
//
//		public String getSendTime() {
//			return sendTime;
//		}
//
//		public void setSendTime(String sendTime) {
//			this.sendTime = sendTime;
//		}
//
//		public String getSpNumber() {
//			return spNumber;
//		}
//
//		public void setSpNumber(String spNumber) {
//			this.spNumber = spNumber;
//		}
//
//		public String getSign() {
//			return sign;
//		}
//
//		public void setSign(String sign) {
//			this.sign = sign;
//		}
//
//		public String getReportUrl() {
//			return reportUrl;
//		}
//
//		public void setReportUrl(String reportUrl) {
//			this.reportUrl = reportUrl;
//		}
//
//		public String getMoUrl() {
//			return moUrl;
//		}
//
//		public void setMoUrl(String moUrl) {
//			this.moUrl = moUrl;
//		}
//
//		public String getAttach() {
//			return attach;
//		}
//
//		public void setAttach(String attach) {
//			this.attach = attach;
//		}
//
//		@Override
//		public String toString() {
//			return String.format(
//					"SendSmsEntity [appKey=%s, timestamp=%s, mobile=%s, content=%s, sendTime=%s, spNumber=%s, sign=%s, reportUrl=%s, moUrl=%s, attach=%s]",
//					appKey, timestamp, mobile, content, sendTime, spNumber, sign, reportUrl, moUrl, attach);
//		}
//
//	}
//
//	/**
//	 * 协议查询实体
//	 * @author pei
//	 *
//	 */
//	public static class QueryEntity {
//		String appKey;
//		String sign;
//
//		public String getAppKey() {
//			return appKey;
//		}
//
//		public void setAppKey(String appKey) {
//			this.appKey = appKey;
//		}
//
//		public String getSign() {
//			return sign;
//		}
//
//		public void setSign(String sign) {
//			this.sign = sign;
//		}
//	}
//
//	/**
//	 * 短信发送
//	 * @throws UnsupportedEncodingException
//	 */
//	public void send() throws UnsupportedEncodingException {
//		// TODO Auto-generated method stub
//		//1. 构建数据包对象
//		SendSmsEntity sendEntity = buildSendEntity();
//		//2. 转化对象为json字符串数据
//		String data = JSONObject.fromObject(sendEntity).toString();
//		long t1 = System.currentTimeMillis();
//		//3. 字符串url编码，防止特殊字符被客户端强行改变，譬如+会被浏览器或者其他客户端变更为空格
//		String encodeData = URLEncoder.encode(data, "UTF-8");
//		//4. 发送
//		Response resp = request.send(Constants.SMS_SEND_URL, encodeData);
//		//5. 处理发送响应结果 resp.status==1时，
//		System.out.println("\n");
//		System.out.println(">>> Request.url:             " + Constants.SMS_SEND_URL);
//		System.out.println(">>> Request.data:            " + data);
//		System.out.println(">>> ");
//		System.out.println(">>> Response.contentLength:  " + resp.contentLength());
//		System.out.println(">>> Response.contentType:    " + resp.contentType());
//		System.out.println(">>> Response.status:         " + resp.status());
//		System.out.println(">>> Response.charset:        " + resp.charset());
//		System.out.println(">>> Response.content:        " + resp.content());
//		System.out.println(">>> Response.error:          " + resp.error());
//		System.out.println(">>> cost.time.ms:            " + (System.currentTimeMillis() - t1));
//
//		//解析发送结果
//		if (resp.status() == 200 && resp.content() != null) {
//			JSONObject respJson = JSONObject.fromObject(resp.content());
//			System.out.println(
//					">>> Send.result:             " + (respJson.getInt("status") == 1 ? "OK" : "FAIL"));
//			if (respJson.getInt("status") == 1) {
//				System.out.println(">>> Send.result.taskId:      " + respJson.getLong("taskId"));
//			}
//		}
//
//	}
//
//	/**
//	 * {"appKey":"100819","timestamp":"1546589422955","mobile":"18695993557",
//	 * "content":"汉中市政府","spNumber":"","sendTime":"20190809090057","reportUrl":"",
//	 * "moUrl":"","attach":"","sign":"B65977B7BC6FF701A9B4395550CB3577"}
//	 * @return
//	 */
//	private static SendSmsEntity buildSendEntity() {
//		// TODO Auto-generated method stub
//		SendSmsEntity entity = new SendSmsEntity();
//		entity.setAppKey(Constants.APP_KEY);
//		entity.setTimestamp(System.currentTimeMillis() + "");
//		entity.setMobile("15070784873");
//		entity.setContent("【赣州职业技术学院】你好：张三，你的报名信息已被录取，请注意短信通知。");
//		entity.setReportUrl("");
//		//定时发送
//		//entity.setSendTime("20190809090057");
//		//签名校验必填写字段
//		//appKey,timestamp,mobile,content,spNumber,sendTime,appSecret
//		String source = entity.getAppKey() + entity.getTimestamp() + entity.getMobile() + entity.getContent()
//				+ entity.getSpNumber() + entity.getSendTime() + Constants.APP_SECRET;
//		String sign = MD5.getMD5(source);
//		entity.setSign(sign);
//		return entity;
//	}
//
//	/**
//	 * 加密发送 需额外申请
//	 * @throws Exception
//	 */
//	public void securitySend() throws Exception {
//		//1. 构建数据包对象
//		SendSmsEntity sendEntity = buildSendEntity();
//		//2. 转为json字符串数据
//		String data = JSONObject.fromObject(sendEntity).toString();
//		//3. 生成16随机aes密码；密码长度不能小于16位
//		String aesKey = RandomUtils.randomString(16);
//		System.out.println("AES.key=" + aesKey);
//		//4. 对发送数据进行aes加密啊
//		String encrptData = Base64.encodeBase64String(AES.encryptAES(data, aesKey));
//		//5. 使用分配的公钥加密16位随机密码;publicKey 平台方提供
//		String rsaKey = RSA.encodeBase64StringPublic(aesKey.getBytes(), RSA.getPublicKey(publicKey));
//		System.out.println("token=" + aesKey);
//		// url地址增加客户参数 /api/sms/air/encrptySend/:appKey
//		String securityUrl = Constants.SMS_SECURITY_SEND_URL + "/" + sendEntity.getAppKey();
//		//6. 随机密码存入http头字段token中
//		request.builder().contentType(ContentType.TEXT).header("token", rsaKey).build();
//		long t1 = System.currentTimeMillis();
//		//7. 发送加密数据
//		Response resp = request.send(securityUrl, encrptData);
//		System.out.println("\n");
//		System.out.println(">>> Request.url:             " + securityUrl);
//		System.out.println(">>> Request.data:            " + data);
//		System.out.println(">>> Request.data.encrpt:     " + encrptData);
//		System.out.println(">>> ");
//		System.out.println(">>> Response.contentLength:  " + resp.contentLength());
//		System.out.println(">>> Response.contentType:    " + resp.contentType());
//		System.out.println(">>> Response.status:         " + resp.status());
//		System.out.println(">>> Response.charset:        " + resp.charset());
//		System.out.println(">>> Response.content:        " + resp.content());
//		System.out.println(">>> Response.error:          " + resp.error());
//		System.out.println(">>> cost.time.ms:            " + (System.currentTimeMillis() - t1));
//	}
//
//	/**
//	 * 查询余额
//	 */
//	public void queryBalance() {
//
//		QueryEntity entity = new QueryEntity();
//		entity.setAppKey(Constants.APP_KEY);
//		entity.setSign(MD5.getMD5(entity.getAppKey() + Constants.APP_SECRET));
//
//		String data = JSONObject.fromObject(entity).toString();
//		long t1 = System.currentTimeMillis();
//		Response resp = request.send(Constants.SMS_QUERY_BALANCE_URL, data);
//		System.out.println("\n");
//		System.out.println(">>> Request.url:             " + Constants.SMS_QUERY_BALANCE_URL);
//		System.out.println(">>> Request.data:            " + data);
//		System.out.println(">>> ");
//		System.out.println(">>> Response.contentLength:  " + resp.contentLength());
//		System.out.println(">>> Response.contentType:    " + resp.contentType());
//		System.out.println(">>> Response.status:         " + resp.status());
//		System.out.println(">>> Response.charset:        " + resp.charset());
//		System.out.println(">>> Response.content:        " + resp.content());
//		System.out.println(">>> Response.error:          " + resp.error());
//		System.out.println(">>> cost.time.ms:            " + (System.currentTimeMillis() - t1));
//	}
//
//	/**
//	 * 查询状态报告
//	 * @author pei
//	 *
//	 */
//	public void queryReport() {
//		// TODO Auto-generated method stub
//		QueryEntity entity = new QueryEntity();
//		entity.setAppKey("90001");
//		entity.setSign(MD5.getMD5(entity.getAppKey() + Constants.APP_SECRET));
//
//		String data = JSONObject.fromObject(entity).toString();
//		long t1 = System.currentTimeMillis();
//		Response resp = request.send(Constants.SMS_QUERY_REPORT_URL, data);
//		System.out.println("\n");
//		System.out.println(">>> Request.url:             " + Constants.SMS_QUERY_REPORT_URL);
//		System.out.println(">>> Request.data:            " + data);
//		System.out.println(">>> ");
//		System.out.println(">>> Response.contentLength:  " + resp.contentLength());
//		System.out.println(">>> Response.contentType:    " + resp.contentType());
//		System.out.println(">>> Response.status:         " + resp.status());
//		System.out.println(">>> Response.charset:        " + resp.charset());
//		System.out.println(">>> Response.content:        " + resp.content());
//		System.out.println(">>> Response.error:          " + resp.error());
//		System.out.println(">>> cost.time.ms:            " + (System.currentTimeMillis() - t1));
//	}
//
//	/**
//	 * 查询mo
//	 * @author pei
//	 *
//	 */
//	public void queryMo() {
//		// TODO Auto-generated method stub
//		QueryEntity entity = new QueryEntity();
//		//entity.setAppKey("90001");
//		entity.setAppKey("100806"); //53d4cce170cdda7f
//		//entity.setSign(MD5.getMD5(entity.getAppKey() + Constants.APP_SECRET));
//		entity.setSign(MD5.getMD5(entity.getAppKey() + "53d4cce170cdda7f"));
//
//		String data = JSONObject.fromObject(entity).toString();
//		long t1 = System.currentTimeMillis();
//		String url = Constants.SMS_QUERY_MO_URL;
//		url = "http://47.95.239.60:7802" + "/api/sms/air/mo";
//		Response resp = request.send(url, data);
//		System.out.println("\n");
//		System.out.println(">>> Request.url:             " + url);
//		System.out.println(">>> Request.data:            " + data);
//		System.out.println(">>> ");
//		System.out.println(">>> Response.contentLength:  " + resp.contentLength());
//		System.out.println(">>> Response.contentType:    " + resp.contentType());
//		System.out.println(">>> Response.status:         " + resp.status());
//		System.out.println(">>> Response.charset:        " + resp.charset());
//		System.out.println(">>> Response.content:        " + resp.content());
//		System.out.println(">>> Response.error:          " + resp.error());
//		System.out.println(">>> cost.time.ms:            " + (System.currentTimeMillis() - t1));
//	}
//
//}
